import {
  Column,
  Entity,
  PrimaryGeneratedColumn,
  BeforeInsert,
  BeforeUpdate,
  Index
} from 'typeorm';

@Entity('tb_seller')
export class Seller {

  /** 经销商状态：1-正常（可登记订单） */
  public static readonly STATUS_ENABLE = 1;

  /** 经销商状态：0-禁用（无法登记订单） */
  public static readonly STATUS_DISABLE = 0;

  /** 经销商唯一ID，自增（如1,2,3...），用于内部关联订单 */
  @PrimaryGeneratedColumn('increment', {
    type: 'bigint',
    comment: '经销商唯一ID，自增（如1,2,3...），用于内部关联订单'
  })
  id: number;

  /** 经销商手机号，微信登录手机号，作为身份区分的核心标识（与普通用户手机号唯一不重复） */
  @Column({
    length: 11,
    comment:
      '经销商手机号，微信登录手机号，作为身份区分的核心标识（与普通用户手机号唯一不重复）'
  })
  @Index({ unique: true })
  phone: string;

  /** 经销商名称（如“北京朝阳球杆门店”上海浦东经销商） */
  @Column({
    length: 50,
    comment: '经销商名称（如“北京朝阳球杆门店”上海浦东经销商）'
  })
  name: string;

  /** 经销商省份（如“北京”、“上海”） */
  @Column({
    type: 'varchar',
    nullable: true,
    length: 50,
    comment: '经销商省份（如“北京”、“上海”）'
  })
  province?: string;

  /** 经销商状态：0-禁用（无法登记订单），1-正常（可登记订单），默认1 */
  @Column({
    type: 'tinyint',
    default: 1,
    comment: '经销商状态：0-禁用（无法登记订单），1-正常（可登记订单），默认1'
  })
  status: number;

  /** 经销商创建（登记）时间，13位时间戳（毫秒），如1714530600000 */
  @Column({
    type: 'bigint',
    nullable: true,
    comment: '经销商创建（登记）时间，13位时间戳（毫秒），如1714530600000'
  })
  create_at: number;

  /** 经销商信息最后更新时间，13位时间戳（毫秒），如1714530600000 */
  @Column({
    type: 'bigint',
    nullable: true,
    comment: '经销商信息最后更新时间，13位时间戳（毫秒），如1714530600000'
  })
  update_at: number;

  /** 备注信息（如“2024年秋冬经销商*仅限销售球杆不定制”） */
  @Column({
    length: 500,
    nullable: true,
    comment: '备注信息（如“2024年秋冬经销商*仅限销售球杆不定制”）'
  })
  remark?: string;

  @BeforeInsert()
  beforeInsert() {
    this.create_at = Date.now();
    this.update_at = Date.now();
  }

  @BeforeUpdate()
  beforeUpdate() {
    this.update_at = Date.now();
  }
}
